import { AddFriend } from "./add_user";
import { JoinProject } from "./join_project";

/** 
 * 系统消息
 */
export class SystemMsg {

    /** 消息 id */
    id      : number;

    /** 用户 id */
    userId  : number;

    /** 消息内容 */
    data    : any;

    /** 是否已读 */
    read    : boolean;

    /** 系统消息类型 */
    type    : SystemMsgType;

    /** 消息发布时间 */
    time    : string

}

/** 
 * 系统消息类型
 */
export enum SystemMsgType {
    
    /** 项目加入申请 */
    JOIN_PROJECT_REQUEST = "JOIN_PROJECT_REQUEST",
    
    /** 项目加入响应 */
    JOIN_PROJECT_RESPONSE = "JOIN_PROJECT_RESPONSE",

    /** 添加好友申请 */
    ADD_FRIEND_REQUEST = "ADD_FRIEND_REQUEST",             

    /** 添加好友响应 */
    ADD_FRIEND_RESPONSE = "ADD_FRIEND_RESPONSE",            
    
}

/** 
 * 系统消息 - 项目申请
 * @param T 只允许 JoinProjectRequest 或 JoinProjectResponse
 */
export class SystemProjectJoinMsg<T extends JoinProject> {

    /** 消息发送人 id */
    userId      : number;

    /** 消息发送人用户名 */
    username    : string;

    /** 申请数据或响应结果 */
    data        : T;

}

/** 
 * 系统消息 - 加好友申请
 * @param T 只允许 AddFriendRequest 或 AddFriendResponse
 */
 export class SystemAddFriendMsg<T extends AddFriend> {

    /** 消息发送人 id */
    userId      : number;

    /** 消息发送人用户名 */
    username    : string;

    /** 申请数据或响应结果 */
    data        : T;

}
